Existing mobile device applications or apps, for instance, applications for smartphones, are restricted in their capability to communicate with other applications on the same mobile device because they run in a sandbox paradigm. For example, for security reasons, a mobile device's operating system (OS) may restrict each application (including its preferences and data) to a unique location in the file system. This restriction is part of the security feature known as the application's sandbox. The sandbox is a set of fine-grained controls limiting an application's access to files, preferences, network resources, hardware, and so on. Each application has access to the contents of its own sandbox but cannot access other applications' sandboxes.
In another known mobile device, the kernel sandboxes applications from each other, and therefore, applications must explicitly share resources and data. They do this by declaring the permissions they need for additional capabilities not provided by the basic sandbox. Applications statically declare the permissions they require, and the system prompts the user for consent at the time the application is installed. There is no mechanism for granting permissions dynamically (at run-time) because it complicates the user experience to the detriment of security.
The current smartphone data access model allows and application to access or read only its own private data and those carefully selected data objects maintained by the system, for example, the mobile device's operating system that may include content management functionality. Applications cannot directly communicate with each other.